package com.ysh.many_to_many;

import com.ysh.domain.Student;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface StudentsMapper {
    // 查询全部
    @Select("select distinct s.id, s.name, s.age from student s, stu_cr sc where sc.sid= s.id")
    @Results({
            @Result(column = "id", property = "id"),      // 列名、属性名
            @Result(column = "name", property = "name"),  // 学生姓名
            @Result(column = "age", property = "age"),    // 年龄

            @Result(
                    property = "courses",  // 被包含对象的变量名
                    javaType = List.class,  // 被包含对象的实际数据类型
                    // 根据查询student表的id来作为关联条件，去查询中间表和课程表
                    column = "id",  // 作为关联的条件，查询课程和中间表
                    /*
                        many、@Many 一对多，间接形成多对多的关系
                        select属性：指定调用哪个接口中的哪个查询方法
                     */
                    many = @Many(select = "com.ysh.many_to_many.CourseMapper.selectBySid")
            )

    })
    public abstract List<Student> selectAll();
}
